home *** CD-ROM | disk | FTP | other *** search
/ Macworld Expo - Develope…Central & Net Innovations / Developer Central and Net Innovators (MacWorld Expo) (January 1999).iso / Developer Central / Bowers Development / Demo AppMaker / Examples / plain C OS8 / Everything / ModelessText.c < prev    next >
Encoding:
C/C++ Source or Header  |  1998-10-29  |  5.1 KB  |  203 lines  |  [TEXT/CWIE]

  1. /* ModelessText.c -- modeless dialog */
  2.  
  3. #include <Types.h>
  4. #include <Quickdraw.h>
  5. #include <Controls.h>
  6. #include <Dialogs.h>
  7. #include <Events.h>
  8. #include <Lists.h>
  9. #include <Menus.h>
  10. #include <TextEdit.h>
  11. #include <Appearance.h>
  12. #include <stdlib.h>
  13.  
  14. #include "ResourceDefs.h"
  15. #include "Miscellany.h"
  16. #include "ControlUtils.h"
  17.  
  18. #include "Dispatcher.h"
  19. #include "ModelessText.h"
  20.  
  21. #define kSmallField        1
  22. #define kLargeField        2
  23. #define kX12345Field        3
  24. #define kX12345e6Field        4
  25. #define kPasswordField        5
  26. #define kDateField        6
  27. #define kTimeField        7
  28. #define kStyledField        8
  29.  
  30.  
  31. //----------
  32. DialogPtr        ModelessTextDialog = nil;
  33.  
  34. //----------
  35. void    ModelessText_Create ()
  36. {
  37.     ModelessText*            dialog = NewModelessText ();
  38.     DModelessTextData*        data = NewDModelessTextData ();
  39.  
  40.     AMDialog_MakeDialog ((AMDialog*)dialog, DLOG_ModelessText);
  41.     ModelessText_ConnectToData (dialog, (AMSignaler*)data);
  42. }
  43.  
  44. //----------
  45. void    ModelessText_Show ()
  46. {
  47.     if (ModelessTextDialog == nil) {
  48.         ModelessText_Create ();
  49.     }
  50.     if (ModelessTextDialog != nil) {
  51.         SelectWindow (ModelessTextDialog);
  52.         ShowWindow (ModelessTextDialog);
  53.     }
  54. }
  55.  
  56. //----------
  57. void    ModelessText_Close ()
  58. {
  59.     HideWindow (ModelessTextDialog);
  60. }
  61.  
  62. //----------
  63. ModelessText*        NewModelessText ()
  64. {
  65.     ModelessText*        dialog;
  66.  
  67.     dialog = (ModelessText*)malloc (sizeof (ModelessText));
  68.     ModelessText_Init (dialog);
  69.     SetClassID (dialog, classModelessText);
  70.  
  71.     return dialog;
  72. }
  73.  
  74. //----------
  75. void    DeleteModelessText (
  76.     ModelessText*        dialog)
  77. {
  78.     ModelessText_Free (dialog);
  79.     free (dialog);
  80. }
  81.  
  82. //----------
  83. void    ModelessText_Init (
  84.     ModelessText*        self)
  85. {
  86.     AMDialog_Init ((AMDialog*)self);
  87. }
  88.  
  89. //----------
  90. void    ModelessText_Free (
  91.     ModelessText*        self)
  92. {
  93.     AMDialog_Free ((AMDialog*)self);
  94. }
  95.  
  96. //----------
  97. void    ModelessText_FinishMake (
  98.     ModelessText*        self)
  99. {
  100.     ModelessTextDialog = ((AMDialog*)self)->mDialog;
  101.  
  102.     self->mSmallHandle = AMDialog_GetControlItem ((AMDialog*)self, kSmallField);
  103.     self->mLargeHandle = AMDialog_GetControlItem ((AMDialog*)self, kLargeField);
  104.     self->mX12345Handle = AMDialog_GetControlItem ((AMDialog*)self, kX12345Field);
  105.     self->mX12345e6Handle = AMDialog_GetControlItem ((AMDialog*)self, kX12345e6Field);
  106.     self->mPasswordHandle = AMDialog_GetControlItem ((AMDialog*)self, kPasswordField);
  107.     self->mDateHandle = AMDialog_GetControlItem ((AMDialog*)self, kDateField);
  108.     self->mTimeHandle = AMDialog_GetControlItem ((AMDialog*)self, kTimeField);
  109.     self->mStyledHandle = AMDialog_GetControlItem ((AMDialog*)self, kStyledField);
  110. }
  111.  
  112. //----------
  113. void    ModelessText_ConnectToData (
  114.     ModelessText*        self,
  115.     AMSignaler*        inData)
  116. {
  117.     AMDialog_ConnectToData ((AMDialog*)self, inData);
  118.     self->mData = (DModelessTextData*) inData;
  119.  
  120.     SetControlTextStr (self->mSmallHandle, GetSmall3 (self->mData));
  121.     SetControlTextStr (self->mLargeHandle, GetLarge3 (self->mData));
  122.     SetControlTextValue (self->mX12345Handle, GetX12347 (self->mData));
  123.     SetControlTextFloat (self->mX12345e6Handle, GetX12345e8 (self->mData));
  124.     SetControlTextStr (self->mPasswordHandle, GetPassword3 (self->mData));
  125.     SetClockDateTime (self->mDateHandle, GetDate3 (self->mData));
  126.     SetClockDateTime (self->mTimeHandle, GetTime3 (self->mData));
  127.     SetControlTextStr (self->mStyledHandle, GetStyled3 (self->mData));
  128. }
  129.  
  130. //----------
  131. void    ModelessText_DoItem (
  132.     ModelessText*        self,
  133.     SInt16        inItemHit)
  134. {
  135.     switch (inItemHit) {
  136.     case kSmallField:
  137.             SetSmall3Handle (self->mData, GetEditTextChars (self->mSmallHandle));
  138.         break;
  139.     case kLargeField:
  140.             SetLarge3Handle (self->mData, GetEditTextChars (self->mLargeHandle));
  141.         break;
  142.     case kX12345Field:
  143.             SetX12347 (self->mData, GetControlTextValue (self->mX12345Handle));
  144.         break;
  145.     case kX12345e6Field:
  146.             SetX12345e8 (self->mData, GetControlTextFloat (self->mX12345e6Handle));
  147.         break;
  148.     case kPasswordField:
  149.             SetPassword3Handle (self->mData, GetEditTextChars (self->mPasswordHandle));
  150.         break;
  151.     case kDateField:
  152.             SetDate3 (self->mData, GetClockDateTime (self->mDateHandle));
  153.         break;
  154.     case kTimeField:
  155.             SetTime3 (self->mData, GetClockDateTime (self->mTimeHandle));
  156.         break;
  157.     case kStyledField:
  158.             SetStyled3Handle (self->mData, GetEditTextChars (self->mStyledHandle));
  159.         break;
  160.  
  161.     } // switch
  162. }
  163.  
  164. //----------
  165. void    ModelessText_DataChanged (
  166.     ModelessText*        self,
  167.     long        inDataID)
  168. {
  169.     if (inDataID == idSmall3) {
  170.         SetControlTextStr (self->mSmallHandle, GetSmall3 (self->mData));
  171.     }
  172.     if (inDataID == idLarge3) {
  173.         SetControlTextStr (self->mLargeHandle, GetLarge3 (self->mData));
  174.     }
  175.     if (inDataID == idX12347) {
  176.         SetControlTextValue (self->mX12345Handle, GetX12347 (self->mData));
  177.     }
  178.     if (inDataID == idX12345e8) {
  179.         SetControlTextFloat (self->mX12345e6Handle, GetX12345e8 (self->mData));
  180.     }
  181.     if (inDataID == idPassword3) {
  182.         SetControlTextStr (self->mPasswordHandle, GetPassword3 (self->mData));
  183.     }
  184.     if (inDataID == idDate3) {
  185.         SetClockDateTime (self->mDateHandle, GetDate3 (self->mData));
  186.     }
  187.     if (inDataID == idTime3) {
  188.         SetClockDateTime (self->mTimeHandle, GetTime3 (self->mData));
  189.     }
  190.     if (inDataID == idStyled3) {
  191.         SetControlTextStr (self->mStyledHandle, GetStyled3 (self->mData));
  192.     }
  193. }
  194.  
  195. //----------
  196. Boolean        ModelessText_Filter (
  197.     ModelessText*            self,
  198.     EventRecord            *ioEvent,
  199.     DialogItemIndex        *outItemHit)
  200. {
  201.     return AMDialog_Filter ((AMDialog*)self, ioEvent, outItemHit);
  202. }
  203.